关于sata状态寄存器和错误寄存器的理解 |
您所在的位置:网站首页 › sata类型 ahci › 关于sata状态寄存器和错误寄存器的理解 |
在AHCI协议中Port Register中有如下几个寄存器,我们这里主要关注PxSSTS和PxSERR
2. 什么是SCR寄存器 参考AHCI协议14.1章节 Sata host适配器包括了一个额外的寄存器块,这些寄存器是分离的独立的,映射了ATA command Block Register,用来上报状态和错误信息。 这些寄存器,Serial ATA Status and Control registers 即SCR寄存器 3. PxSSTS寄存器和PxSERR寄存器与SCR寄存器的关系
4. SCR寄存器是什么?从哪里来? 上面的(1)中提到了SCR寄存器是映射了ATA command Block Register,那么该寄存器从哪里来呢?下图可以解释该问题: 可以看到写操作由于是host主动发起的,这时ATA command block中并没有状态和错误寄存器的信息,我们更关注的是读操作,可以看到ATA command block中包含了状态寄存器和错误寄存器。 目前能确定的ATA command register 和 SSTATUS走的不是同一条路,更新并不关联。
5. ATA command register从host到device打通 从下图可以看到在transport layer,host中有command Register和control register,我理解这就是AHCI协议中描述的ATA command block and control block register,应该也就是我们常说的shadow register,而且在device端也可以看到对应的模块。 那么从host出发,我们在application 层组包触发命令发送,host适配器首先在transport层填充shadow register,然后device transport层收到。反之亦然。 6. Status/Error寄存器中到底是什么内容 协议中对此也有描述,不过太复杂,各bit对应含义太多。 这里我们列举最通俗的一种情况,我们参考了微信公众号【存储随笔】中的描述见下图 7. 关于SStatus 其实这两个寄存器也就是我们在AHCI协议中看到的PxSSTS和PxSERR寄存器。 这两个寄存器从协议中看是用来描述sata host接口状态和错误信息的。 在这里我们首先展示一下SStatus寄存器,下图摘自AHCI协议 从手册中的描述来看一旦phy层触发了COMRESET to device,这时该寄存器就会更新 8. 关于SError寄存器 错误寄存器可以分为两部分 高16bit提供了比较直观的错误 低16bit只是说明了错误类型 所有一旦发生异常上报错误时,该寄存器不止上报一种错误。
最后,本文档主要说明两条信息线的维护流程 接收FIS中的status/error - host shadow register(ATA command) - device Task file data registerSStatus(PxSSTS)/SError(PxSERR) |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |